package base

import (
	"fmt"
	"reflect"
	"strings"
)

//const GREAST_OF_ALL_TIME  string = "Michael Jordan"
//const GOING_ON_ANOTHER_TEAM string = "Lebrun James"

const (
	GREAST_OF_ALL_TIME    string = "Michael Jordan"
	GOING_ON_ANOTHER_TEAM string = "Lebrun James"
	a                            = iota
	b                            = iota
	c                            = iota
	d                            = 100
	e, f                         = iota + 2, iota + 3
	g, h
)

func Basic() {
	//定义一个开关
	var stutas bool
	fmt.Println("goat就是", GREAST_OF_ALL_TIME)
	fmt.Println("快攻goat就是", GOING_ON_ANOTHER_TEAM)
	fmt.Println(a, b, c, d, e, f, g, h)
	fmt.Println(stutas)
	String_translation()
	String_Oprate()
}

/*
	\r:回到首行
	\n:换行符
	\t:制表符
	%s:打印字符串
*/
/*
	%d:十进制整数。
	%v: 默认格式的值。对于结构体，会打印其字段。对于切片，会打印其元素，但不会打印长度信息。
	%q: - 双引号包围的字符串，使用Go语法安全的转义规则。
	%c: - 相应Unicode码点的字符。
	%t: - 布尔值，true或false
*/
/*
	len(str):求长度
	+或者fmt.Sprintf:拼接字符串
	strings.Split:分割
	strings.Contains:判断是否包含
	strings.HasPrefix:前辍判断,
	strings.HasSuffix:后辍判断
	strings.Index():字符串出现的位置
	strings.LastIndex()：字符串出现最新的位置
	strings.Join(a[]string, sep string)字符串json操作
*/
// 字符串转译符号
func String_translation() {
	//str1 := `2222222222
	//	2222222222222222`
	str2 := "111111\n\r2222"
	fmt.Println(str2)
	fmt.Println("Name\tAge\tSex\tfavorite")
	fmt.Println("周管祥\t24\t男\t唱跳rap蓝球")
}

// 字符串操作
func String_Oprate() {
	var (
		Perfix_bool bool
		Suffix_bool bool
	)
	StringSlice := []string{
		"只因咯咯", "绿尸函", "食不食有病", "煤完了",
	}
	str0 := "/usr/local/portal/gxiptvportal/pageDX\\play\\main\\pfBar\\template3\\view1\\js"
	str01 := "/usr/local/portal/gxiptvportal/pageDX\\play\\main\\core\\template6\\view1\\js"
	//str1 := "wwwwwwwwwwwwwwwwww" + "3323232332"
	str1 := fmt.Sprintf("张三|李四|%s|马六", "王五")
	str2 := strings.Split(str1, "|")
	str3 := strings.Contains(str1, "王五")
	Perfix_bool = strings.HasPrefix(str1, "张三")
	Suffix_bool = strings.HasSuffix(str1, "马六")
	str_separate := strings.Join(StringSlice, "**")
	str_replace_pfbar := strings.ReplaceAll(str0, "\\", "/")
	str_replace_play := strings.ReplaceAll(str01, "\\", "/")
	str_dist := make([]byte, len(str1))
	copy(str_dist, str1)
	/*
		调用方法
	*/
	traversalString()
	Oprate_Slice()
	/*
		打印
	*/
	fmt.Println("打印str1的值", str1)
	fmt.Println("字符串包含返回bool:", str3)
	fmt.Println("打印str2的切片:", str2[1])
	fmt.Println("打印str1的长度:", len(str1))
	fmt.Println("打印str1的前缀:", Perfix_bool)
	fmt.Println("打印str1的后缀:", Suffix_bool)
	fmt.Println("打印切片按照-分隔:", str_separate)
	fmt.Println("打印str1的数据类型:", reflect.TypeOf(len(str1)))
	fmt.Println("打印str2的数据类型", reflect.TypeOf(str2))
	fmt.Println("打印str1的字符串拷贝:", string(str_dist))
	fmt.Println("打印替换字符串中所有pfbar:", str_replace_pfbar)
	fmt.Println("打印替换字符串中所有paly:", str_replace_play)
}

// 便利循环字符串
func traversalString() {
	str1 := "张三.x8s8x8s.com"
	for i := 0; i < len(str1); i++ {
		fmt.Printf("%c(%v)", str1[i], str1[i])
	}
	fmt.Println()
	for _, r := range str1 {
		fmt.Printf("%c(%v)", r, r)
	}
	fmt.Println()
}

// 切片操作
func Oprate_Slice() {
	s := make([]string, 10)
	s = []string{"蔡徐坤", "咯咯", "唱", "跳", "rap", "篮球"}
	fmt.Println(s)
}
